// 引入Koa
const Koa = require('koa')
// 导入路由
const Router = require('../router/index.js')
// 引入cors
const cors= require('koa2-cors')
// 引入koa-body
const {koaBody} = require('koa-body')
// 引入验证器
const bouncer = require('koa-bouncer')
// 引入session
const session = require('koa-generic-session')
// 引入redis
const Redis = require('koa-redis')
// 引入托管静态资源
const static = require('koa-static')
const path = require('path')

// 创建服务器
const app = new Koa()
// 使用cors
app.use(cors())
// 配置session的中间件
app.keys = ['keyskeys']; /** cookie的签名 */
const CONFIG = {
    key: 'koa:sess', /** 默认 */
    maxAge: 86400000, /** cookie的过时时间 【须要修改】*/
    overwrite: true, /** (boolean) can overwrite or not (default true) 没有效果 默认*/
    httpOnly: true, /** true表示只有服务器端能够获取cookie*/
    signed: true, /** 默认 签名 */
    rolling: false, /** 在每次请求时强行设置 cookie,这将重置 cookie 过时时间(默认：false) 【须要修改】*/
    renew: true, /** (boolean) renew session when session is nearly expired 【须要修改】*/
    store:new Redis()
  }
app.use(session(CONFIG));
// 使用koaBody
app.use(koaBody())
// 使用验证器
app.use(bouncer.middleware())

// 使用static托管静态资源
app.use(static(path.join(__dirname ,'../public')))
// 启动router
app.use(Router.routes()).use(Router.allowedMethods())
app.use(Router.allowedMethods());

module.exports = app